/* 
  这种回调的方式有很多的弊端：
  1. 如果是我们自己封装的requestData，那么我们在封装的时候必须要自己设计好callback名称，并且使用好
  2. 如果我们使用的是别人封装的或者一些第三方库，那么我们必须看别人的源码或者文档，才知道它这个函数需要怎么去获取结果
*/

function requestData(url) {
  return new Promise((resovle, reject) => {
    // 模拟网络请求
    setTimeout(() => {
      // 拿到请求的结果
      // url传入的是coderwhy, 请求成功
      if (url === "coderwhy") {
        // 成功
        let names = ["abc", "cba", "nba"];
        resovle(names);
      } else {
        // 失败
        // 否则请求失败
        let errMessage = "请求失败， url错误";
        reject(errMessage);
      }
    }, 3000);
  });
}

const promise = requestData("coderwhy");
promise.then(
  (res) => {
    console.log("请求成功：", res);
  },
  (err) => {
    console.log("请求失败：", err);
  }
);
